"""
驱动程序辅助模块
包含用于元素定位等与 Appium 驱动程序相关的辅助函数
"""

from appium.webdriver.common.mobileby import MobileBy
import logging


def locate_element(driver, locator_type, locator_value):
    """
    根据指定的定位方式查找元素

    参数:
        driver (WebDriver): Appium WebDriver 实例
        locator_type (str): 元素定位方式，支持 'id', 'xpath', 'accessibility_id'
        locator_value (str): 元素定位值

    返回:
        WebElement: 找到的元素对象，如果定位失败返回 None

    支持的定位方式:
        - id: 使用元素的 ID 进行定位
        - xpath: 使用 XPath 表达式进行定位
        - accessibility_id: 使用无障碍 ID 进行定位（适用于移动端）
    """
    try:
        if locator_type == "id":
            element = driver.find_element(MobileBy.ID, locator_value)
        elif locator_type == "xpath":
            element = driver.find_element(MobileBy.XPATH, locator_value)
        elif locator_type == "accessibility_id":
            element = driver.find_element(MobileBy.ACCESSIBILITY_ID, locator_value)
        return element
    except Exception as e:
        logging.error(f"元素定位失败: {str(e)}")
        return None
